DROP TABLE Atribute cascade constraints;
DROP TABLE Location_Typ cascade constraints;
DROP TABLE Buchungen cascade constraints;
DROP TABLE Kunden cascade constraints;
DROP TABLE Atribut_Location cascade constraints;
DROP TABLE Locations cascade constraints;
DROP TABLE Reisen cascade constraints;
DROP TABLE Mitarbeiter cascade constraints;
DROP TABLE Buchungen_Reisen cascade constraints;
DROP TABLE Buchung_Erweiterungen cascade constraints;
DROP TABLE Erweiterungen cascade constraints;

DROP SEQUENCE SQ_Atribut_Location;
create sequence SQ_Atribut_Location start with 1 increment by 1;
DROP SEQUENCE SQ_KUNDEN;
create sequence SQ_KUNDEN start with 1 increment by 1;
DROP SEQUENCE SQ_Buchungen;
create sequence SQ_Buchungen start with 1 increment by 1;
DROP SEQUENCE SQ_Reisen;
create sequence SQ_Reisen start with 1 increment by 1;
DROP SEQUENCE SQ_Locations;
create sequence SQ_Locations start with 1 increment by 1;
DROP SEQUENCE SQ_Mitarbeiter;
create sequence SQ_Mitarbeiter start with 1 increment by 1;
DROP SEQUENCE SQ_Buchungen_Reisen;
create sequence SQ_Buchungen_Reisen start with  1 increment by 1;
DROP SEQUENCE SQ_Buchung_Erweiterungen;
create sequence SQ_Buchung_Erweiterungen start with  1 increment by 1;
DROP SEQUENCE SQ_Erweiterungen;
create sequence SQ_Erweiterungen start with  1 increment by 1;

CREATE TABLE Atribut_Location(
       Nummer NUMBER PRIMARY KEY,
       Location NUMBER,
       Atribut VARCHAR(32),
       Eigenschaft varchar(16)
);
CREATE TABLE Atribute (
       Name VARCHAR(32) PRIMARY KEY
);
CREATE TABLE Kunden (
       Nummer NUMBER PRIMARY KEY,
       Name VARCHAR(50),
       Vorname VARCHAR(50),
       Geb_Datum DATE,
       Strasse VARCHAR(50),
       PLZ VARCHAR(50),
       Ort VARCHAR(50),
       Land VARCHAR(50),
       Telefon VARCHAR(50),
       Rabatt NUMBER
);
CREATE TABLE Erweiterungen (
       Nummer NUMBER PRIMARY KEY,
       Name VARCHAR2(50),
       Preis NUMBER
);
CREATE TABLE Buchung_Erweiterungen (
       Nummer NUMBER PRIMARY KEY,
       Buchung NUMBER,
       Erweiterung NUMBER
);
CREATE TABLE Buchungen (
       Nummer NUMBER PRIMARY KEY,
       Kunde NUMBER,
       Reise NUMBER,
       Rabatt NUMBER,
       Mitarbeiter NUMBER
);
CREATE TABLE Reisen (
       Nummer NUMBER PRIMARY KEY,
       Beschreibung VARCHAR(100),
       Location NUMBER,
       Preis NUMERIC,
       Plaetze INTEGER
); 
CREATE TABLE Locations (
       Nummer NUMBER PRIMARY KEY,
       Typ VARCHAR(50),
       Name VARCHAR(50),
       Strasse VARCHAR(50),
       PLZ VARCHAR(50),
       Ort VARCHAR(50),
       Land VARCHAR(50),
       Telefon VARCHAR(50),
       Homepage VARCHAR(50),
       Personen NUMBER,
       Bewertung NUMBER
);

CREATE TABLE Mitarbeiter(
       ID NUMBER PRIMARY KEY,
       Name VARCHAR(50),
       Vorname VARCHAR(50),
       Strasse VARCHAR(50),
       PLZ VARCHAR(50),
       Ort VARCHAR(50),
       Telefon VARCHAR(50),
       Mail VARCHAR(50),
       Benutzername VARCHAR(50),
       Passwort VARCHAR(50)
);

CREATE TABLE Location_Typ (
       Name VARCHAR(50) PRIMARY KEY,
	   Beschreibung VARCHAR(200)
);

CREATE TABLE Buchungen_Reisen (
	   ID Number PRIMARY KEY,
	   Buchung Number,
	   Reise Number,
	   Rabatt Number
);

ALTER TABLE Atribut_Location
       ADD ( FOREIGN KEY (Atribut) REFERENCES Atribute);
ALTER TABLE Atribut_Location
       ADD ( FOREIGN KEY (Location) REFERENCES Locations);
ALTER TABLE Locations
       ADD ( FOREIGN KEY (Typ) REFERENCES Location_Typ);
ALTER TABLE Reisen
       ADD ( FOREIGN KEY (Location) REFERENCES Locations);
ALTER TABLE Buchungen
       ADD ( FOREIGN KEY (Kunde) REFERENCES Kunden);
ALTER TABLE Buchungen
       ADD ( FOREIGN KEY (Mitarbeiter) REFERENCES Mitarbeiter);
ALTER TABLE Buchungen_Reisen
       ADD ( FOREIGN KEY (Buchung) REFERENCES Buchungen);
ALTER TABLE Buchungen_Reisen
       ADD ( FOREIGN KEY (Reise) REFERENCES Reisen);
ALTER TABLE Buchung_Erweiterungen
       ADD ( FOREIGN KEY (Buchung) REFERENCES Buchungen);
ALTER TABLE Buchung_Erweiterungen
       ADD ( FOREIGN KEY (Erweiterung) REFERENCES Erweiterungen);
       
-- INSERTS

INSERT INTO Location_Typ VALUES('Hotel','');
INSERT INTO Location_Typ VALUES('Ferienwohnung', '');